home *** CD-ROM | disk | FTP | other *** search
/ QRZ! Ham Radio 8 / QRZ Ham Radio Callsign Database - Volume 8.iso / mac / files / t_sys5 / unixcpio.gz / unixnet.cpio / regs.h < prev    next >
C/C++ Source or Header  |  1994-07-11  |  1KB  |  54 lines

  1. struct WORDREGS {
  2.     unsigned int    ax, bx, cx, dx, si, di, cflag, flags;
  3. };
  4.  
  5. struct BYTEREGS {
  6.     unsigned char    al, ah, bl, bh, cl, ch, dl, dh;
  7. };
  8.  
  9. union    REGS    {
  10.     struct    WORDREGS x;
  11.     struct    BYTEREGS h;
  12. };
  13.  
  14. struct    SREGS    {
  15.     unsigned int    es;
  16.     unsigned int    cs;
  17.     unsigned int    ss;
  18.     unsigned int    ds;
  19. };
  20.  
  21. struct regs {
  22.     union REGS regs;
  23.     struct SREGS sregs;
  24. };
  25.  
  26. #ifndef AZTEC
  27. #define sysint(intno, iregs, oregs) (int86x(intno, iregs.regs, iregs.regs, iregs.sregs), *iregs.regs.x.flags)
  28. #endif
  29.  
  30. /* Macros to simulate Turbo-C style register pseudovariables */
  31. #define    _AX    regs.regs.x.ax
  32. #define    _AL    regs.regs.h.al
  33. #define    _AH    regs.regs.h.ah
  34. #define    _BX    regs.regs.x.bx
  35. #define    _BL    regs.regs.h.bl
  36. #define    _BH    regs.regs.h.bh
  37. #define    _CX    regs.regs.x.cx
  38. #define    _CL    regs.regs.h.cl
  39. #define    _CH    regs.regs.h.ch
  40. #define    _DX    regs.regs.x.dx
  41. #define    _DL    regs.regs.h.dl
  42. #define    _DH    regs.regs.h.dh
  43. #define    _DI    regs.regs.x.di
  44. #define    _SI    regs.regs.x.si
  45. #define    _DS    regs.sregs.ds
  46. #define    _ES    regs.sregs.es
  47.  
  48. /* Segment number of pointer */
  49. #define    FP_SEG(x)    (sizeof(x) == 4 ? ((long)(x) >> 16) : getds())
  50. /* Offset of pointer */
  51. #define FP_OFF(x)    ((unsigned short)((long)(x) & 0xffff))
  52.  
  53. #define    FLAG_CARRY    (1 << 0)    /* Carry flag */
  54.